package com.example.myproject.java8.Optional;

import com.example.myproject.java8.stream.Student;

import java.util.Optional;

/**
 * Created by xi on 2018/9/15.
 * 使用案例：
 * https://blog.csdn.net/zknxx/article/details/78586799
 *
 */
public class Test {
    //比较傻的一种写法

    /**
     * 这样改写非但不简洁，而且其操作还是和第一段代码一样。无非就是用isPresent方法来替代u==null。
     * 这样的改写并不是Optional正确的用法，我们再来改写一次
     * @param u
     * @return
     */
    public static String getName(Student u) {
        Optional<Student> user = Optional.ofNullable(u);
        if (!user.isPresent()) {
           return "Unknown";
        }
        return user.get().getName();
    }
    public static String getName2(Student u) {
        Optional<Student> s1 =   Optional.ofNullable(u);
        Optional s2 = s1.map(user -> user.getName());
        Object s4  = s2.orElse("sd");
        Object s5 = null;
        try {
            s5 = s2.orElseThrow(()->new IllegalArgumentException("The value of param comp isn't available."));
        } catch (Throwable throwable) {
            System.out.print("2323");
            throwable.printStackTrace();
        }
        return  s4.toString();
    }

    public static void main(String[] args) {
        Student s1 = new Student();
        s1.setName("test");
        System.out.println(getName2(null));
    }

}
